# 导入ApiFalsk
from apiflask import APIFlask, abort
# 导入数据库配置
from database import config as dbConfig
# 导入 db 对象
from database.config import db
# 导入路由模块
from router import app as app_router # app应用路由
from router import device as device_router # 设备路由
# 导入自定义的Response模块
from core.Response import Response

# 实例化APIFlask
app = APIFlask(__name__,title='Airscript自动化程序接口', version='1.0.0',docs_path='/')

# 设置编码格式不能为 ascii
# print(app.json.ensure_ascii)
app.json.ensure_ascii = False

# 导入数据库配置
app.config.from_object(dbConfig)
db.app = app
db.init_app(app)
# 测试数据库连接是否成功（create_all将我们定义的所有表类映射为数据库下的表）
with app.app_context():
    # 移除所有表
    # db.drop_all()
    # 根据model创建所有表
    # db.create_all()
    pass

# 使用蓝图 分模块注册路由
# app 路由模块
app.register_blueprint(app_router.apps)
# device 路由模块
app.register_blueprint(device_router.devices)

# 重新定义404返回的内容
@app.errorhandler(404)
def error_handler(e):
    return Response().error(str(e), 404)

# 运行应用
app.run(debug=True,host='0.0.0.0')